import router from './router'; // 假设你已经导入了 router 实例
import axios from '../js/axiosself';// 导入 axios



const whiteList = ['Login', 'Signup', 'Test','Test2'];

// 动态获取用户允许访问的路由列表
const getUserAllowedRoutes = async () => {
  try {
    const response = await axios.get('/api/user/allowed-routes'); // 假设后端接口返回用户允许访问的路由列表
    return response.data.routes || []; // 返回允许的路由列表
  } catch (error) {
    console.error('获取用户允许的路由列表失败:', error);
    return []; // 如果请求失败，返回空数组
  }
};

// 路由守卫
router.beforeEach(async (to, from, next) => {
  const token = localStorage.getItem('token');

  // 白名单直接放行
  if (whiteList.includes(to.name)) {
    next();
    return;
  }

  // 重定向逻辑
  if (to.path === '/' || to.path === '/Main') {
    next({ path: '/Main/Publish' });
    return;
  }

  // 如果没有 token，跳转到登录页
  if (!token) {
    console.log('无Token，需要登录');
    next({ name: 'Login' });
    return;
  }

  // 动态获取用户允许访问的路由列表
  const allowedRoutes = await getUserAllowedRoutes();

  // 检查用户是否有权限访问目标路由
  if (allowedRoutes.includes(to.name)) {
    next(); // 允许访问
  } else {
    console.log('无权限访问该页面');
    next({ name: 'Unauthorized' }); // 跳转到无权限页面
  }
});

export default router;